package com.kymatrix.kycarbon.xsmd.kbpm.server.model.enums;

import cn.hutool.core.convert.Convert;
import com.kymatrix.kycarbon.xsmd.common.business.common.BaseBusinessEnum;

import static com.kymatrix.kycarbon.xsmd.common.business.common.BaseBusinessEnum.SysConfigGroupName.WF_PROCESS_TASK_PERFORM_TYPE;

/**
 *
 * 流程任务参与类型
 */
public enum ProcessTaskPerformTypeEnum implements BaseBusinessEnum {
    /**
     * 普通参与：一个或多个人同时参与一个任务，所有人只要其中一人执行完成，就能驱动任务节点往下一步执行
     */
    NORMAL("0","普通参与"),
    /**
     * 会签参与：给每个人都创建任务，满足一定条件时，才能驱动任务节点往下一步执行
     * 1. 所有人都执行完成
     * 2. 有一定比率执行完成时
     * 3. 某特殊人员执行完成时
     * ……等等
     */
    COUNTERSIGN("1", "会签参与"),
    ;
    private final String code;

    private final String name;


    ProcessTaskPerformTypeEnum(String code, String name) {
        this.code = code;
        this.name = name;
    }

    @Override
    public String getSysConfigGroupName() {
        return WF_PROCESS_TASK_PERFORM_TYPE;
    }

    public String getCode() {
        return code;
    }

    public String getName() {
        return name;
    }

    /**
     * code转成枚举
     * @param code
     * @return
     */
    public static ProcessTaskPerformTypeEnum codeOf(Object code) {
        if("ALL".equalsIgnoreCase(Convert.toStr(code))
                || COUNTERSIGN.toString().toUpperCase().equals(code)
                || COUNTERSIGN.toString().toLowerCase().equals(code)
                || COUNTERSIGN.code.equals(code)) {
            return COUNTERSIGN;
        }
        return NORMAL;
    }
}
